package com.jetinno.utils;

import android.text.TextUtils;

import java.util.Locale;
import java.util.Map;

/**
 * Created by zhangyuncai.
 * Date: 2022/4/28
 * 'CN'表示中文 'EN'表示英文
 */
public enum LangType {
    chinese(0, "zh_CN", Locale.CHINA,"简体中文"),//简体中文
    english(1, "en_", Locale.ENGLISH,"English"),//英文
    traditional_chinese(2, "zh_TW", Locale.TRADITIONAL_CHINESE,"繁體中文"),//繁体中文
    russia(3, "ru_", new Locale("ru"),"Русский"),//俄罗斯文
    arab(4, "ar_", new Locale("ar")," بالعربية"),//阿拉伯文
    espana(5, "es_", new Locale("es")," Español"),//西班牙文
    korean(6, "ko_", new Locale("ko"),"한국어"),//韩文
    turkey(7, "tr_", new Locale("tr"),"Türkçe"),//土耳其文
    french(8, "fr_", Locale.FRENCH,"Français")//法文
    ;
    private final int num;//语种编号
    private final String code;//新版本的语言类型
    private final Locale locale;
    private final String langName;

    LangType(int num, String code, Locale locale,String langName) {
        this.num = num;
        this.code = code;
        this.locale = locale;
        this.langName = langName;
    }

    public String getLangName() {
        return langName;
    }

    public static LangType findTypeByNum(int num) {
        for (LangType type : values()) {
            if (num == type.getNum()) {
                return type;
            }
        }
        return chinese;
    }

    public static LangType findTypeByCode(String code) {
        for (LangType type : values()) {
            if (TextUtils.equals(type.getCode(), code)) {
                return type;
            }
        }
        return chinese;
    }

    public Locale getLocale() {
        return locale;
    }

    public String getCode() {
        return code;
    }

    public int getNum() {
        return num;
    }

    ///获取APP语言环境下的字符串
    public static String getAppValue(ILangMap iLangMap) {
        return getValueByCode(iLangMap.getLangMap(), LocalManageUtil.getAppLangType(), iLangMap.getDefaultValue());
    }

    ///获取售卖语言环境下的字符串
    public static String getMenupValue(ILangMap iLangMap) {
        return getValueByCode(iLangMap.getLangMap(), LocalManageUtil.getFrontLangType(), iLangMap.getDefaultValue());
    }

    ///获取对应语言环境下的字符串
    public static String getValueByCode(Map<String, String> langMap, LangType langType, String defaultValue) {
        if (langMap == null) {
            return defaultValue;
        }
        String code = langType.getCode();
        if (!langMap.containsKey(code)) {
            return defaultValue;
        }
        String value = langMap.get(code);
        if (TextUtils.isEmpty(value)) {
            return defaultValue;
        }
        return value;
    }
}
/*
中文（中国）：values-zh-rCN
中文（台湾）：values-zh-rTW
中文（香港）：values-zh-rHK
英语（美国）：values-en-rUS
英语（英国）：values-en-rGB
英文（澳大利亚）：values-en-rAU
英文（加拿大）：values-en-rCA
英文（爱尔兰）：values-en-rIE

英文（印度）：values-en-rIN
英文（新西兰）：values-en-rNZ
英文（新加坡）：values-en-rSG
英文（南非）：values-en-rZA

阿拉伯文（埃及）：values-ar-rEG
阿拉伯文（以色列）：values-ar-rIL
保加利亚文:  values-bg-rBG
加泰罗尼亚文：values-ca-rES
捷克文：values-cs-rCZ
丹麦文：values-da-rDK
德文（奥地利）：values-de-rAT
德文（瑞士）：values-de-rCH
德文（德国）：values-de-rDE
德文（列支敦士登）：values-de-rLI
希腊文：values-el-rGR
西班牙文（西班牙）：values-es-rES
西班牙文（美国）：values-es-rUS
芬兰文（芬兰）：values-fi-rFI
法文（比利时）：values-fr-rBE
法文（加拿大）：values-fr-rCA
法文（瑞士）：values-fr-rCH
法文（法国）：values-fr-rFR
希伯来文：values-iw-rIL
印地文：values-hi-rIN
克罗里亚文：values-hr-rHR
匈牙利文：values-hu-rHU
印度尼西亚文：values-in-rID
意大利文（瑞士）：values-it-rCH
意大利文（意大利）：values-it-rIT
日文：values-ja-rJP
韩文：values-ko-rKR
立陶宛文：valueslt-rLT
拉脱维亚文：values-lv-rLV
挪威博克马尔文：values-nb-rNO
荷兰文(比利时)：values-nl-BE
荷兰文（荷兰）：values-nl-rNL
波兰文：values-pl-rPL
葡萄牙文（巴西）：values-pt-rBR
葡萄牙文（葡萄牙）：values-pt-rPT
罗马尼亚文：values-ro-rRO
俄文：values-ru-rRU
斯洛伐克文：values-sk-rSK
斯洛文尼亚文：values-sl-rSI
塞尔维亚文：values-sr-rRS
瑞典文：values-sv-rSE
泰文：values-th-rTH
塔加洛语：values-tl-rPH
土耳其文：values--tr-rTR
乌克兰文：values-uk-rUA
越南文：values-vi-rVN
 */